Tutorial Perl II
issue du site
http://learnperl.scratchcomputing.com/tutorials/csss/
écrit par : Eric
Wilhelm
traduit par : Alain Adelmar
Note du traducteur: Ce tutorial
issu du site
http://learnperl.scratchcomputing.com/tutorials/csss/
, je l'ai traduis pour moi et pour essayer un de mes script de
traduction (pas fini, loin s'en faut), et donc pour le moment je
n'ai pas l'accord de l'éditeur (qui est protégé
par un Copywrite). Donc personne ne peut lire ses lignes, ce tuto et
c'est bien dommage.
Ce tutoriel vous plongera la
tête la première dans la programmation Perl. Assurez-vous
que vous avez récemment installé un programme Perl (5.10
ou plus récent) et que vous étes en mesure de comprendre
l'exemple "Bonjour le monde" dans Getting Started.
This tutorial will take you
headlong into programming Perl. Make sure that you have a recent perl
installed (5.10 or newer) and that you were able to complete the "Hello
World" example in Getting Started.
Pendant que vous parcourrez ce
tutorial, prenez le temps de lire les liens perldoc (vous pouvez aussi
utiliser le programme perldoc pour rechercher la documentation de votre
console.) Plusieurs concepts ont été introduits et
peuvent demander un certain effort pour être comprit. Certains
lecteurs peuvent préfèrer tracer dans le tutoriel, puis y
revenir afin de comprendre les détails.
As you work through this
tutorial, take the time to read the
perldoc links (you can also use the perldoc program to lookup
documentation from your console.) Several concepts are being introduced
and may take some effort to grasp. Some readers may prefer to plow
through the tutorial and then go back through to make sense of the
details.
Vous devriez effectivement
taper (
entrer à
la console) les
exemples plutôt que d'utiliser le "copier + coller". Cela vous
aidera à apprendre et à mémoriser les tournures de
la syntaxe Perl. Si vous commettez une faute de frappe, Perl va
probablement décocher une erreur ou un avertissement - apprendre
à comprendre les messages d'erreur de Perl et de les utiliser
pour trouver vos fautes de frappe fait partie du processus.
You should actually type
the examples rather than using
copy+paste. This will help you to learn and remember the feel of the
Perl syntax. If you make a typo, perl will probably throw an error or
warning — learning to understand perl's error messages and use them to
find your typos is part of the process.
Solving a Problem
Résoudre un problème
Let's say that your office has
decided to keep track of how many bugs each developer fixes and each
team is going to award prizes to the developer with the most bugs fixed
per week. On your first day at work, your manager Sam gives you this
input file and asks you to write a program to determine who wins the
USB rocket launcher on your team (team 42).
Disons
que votre bureau a décidé de garder une trace de combien
de
bogues
chaque
développeur fixe (réppare) et chaque équipe va
décerner des prix pour le
développeur avec le plus de bugs fixés par semaine.
Sur
votre premier jour de travail, votre manager Sam vous donne ce fichier
d'entrée et vous demande d'écrire un programme pour
déterminer qui
gagne le USB
rocket launcher
de
votre équipe (équipe 42).
Team 7
John: 19
Sue: 20
Pam: 35
Team 42
Jeff: 12
Sam: 3
Phil: 26
Jill: 10
Team 9
Bill: 19
John: 7
Linda: 15
So, let's get started. Like every Perl program, we start with a shebang
line and three lines to enable modern features, warnings, and
strictures.
Bon!, démarrons.
Comme
tout programme Perl, on commence avec une ligne shebang
et trois lignes
pour activer les nouvelles caractéristiques
, les avertissements et
restrictions.
1
#!/usr/bin/env perl
2
3
use
5.010000;
4
use warnings;
5
use strict;
Then, we need to open
the input file and read through it until we find the section for our
team.
Ensuite,
nous avons besoin d'ouvrir le fichier d'entrée et de lire le
texte jusqu'à trouver la section pour notre équipe.
7
my
$team_number = 42;
8
my $filename =
'input.txt';
9
10
open(
my $fh,
'<',
$filename)
or
die
"cannot open
'
$filename
'
$!
";
11
12
my $found;
13
while(<$fh>) {
14
if(
m/
^Team (\d+)
$/) {
15
next
if(
$1 != $team_number);
16 $found =
1;
17
last;
18 }
19 }
20
die "cannot find 'Team
$team_number
'"
unless($found);